package controller;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import model.Item;
import model.Lista;
import dao.DAOException;
import dao.ItemDAO;
import dao.ListaDAO;

public class ListaController {
	private ListaDAO listaDAO = ListaDAO.getInstance();
	private ItemDAO itemDAO = ItemDAO.getInstance();
	private Lista lista;
	private List<SelectItem> listaItensSele;
	private List<SelectItem> listaItensTodos;
	
	public ListaController() {
		this.lista = new Lista();
		this.listaItensSele = new ArrayList<SelectItem>();
		this.listaItensTodos = new ArrayList<SelectItem>();
	}
	
	
	
	public List<SelectItem> getListaItensSele() {
		return listaItensSele;
	}



	public void setListaItensSele(List<SelectItem> listaItensSele) {
		this.listaItensSele = listaItensSele;
	}



	public List<SelectItem> getListaItensTodos() {
		return listaItensTodos;
	}



	public void setListaItensTodos(List<SelectItem> listaItensTodos) {
		this.listaItensTodos = listaItensTodos;
	}



	public Lista getLista() {
		return lista;
	}
	public void setLista(Lista lista) {
		this.lista = lista;
	}
	
	public void addListaItensSele(){
		System.out.println("ADD "+this.listaItensTodos.size());
		
	}
	
	public void delListaItensSele(){
		System.out.println("DEL"+this.listaItensSele.size());
	}
	
	public List<Lista> getListas() {
		List<Lista> listas = null;
		try {
			listas = listaDAO.getAll();
		} catch (DAOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		return listas;
	}
	
	public List<SelectItem> getItens() {
		List<Item> itens = null;
		List<SelectItem> listaItens = new ArrayList<SelectItem>();
		try {
			itens = itemDAO.getAll();
			for (Iterator<Item> iterator = itens.iterator(); iterator.hasNext();) {
				Item item = (Item) iterator.next();
				SelectItem si = new SelectItem(item.getId().intValue(), item.getNome());
				listaItens.add(si);
			}
		} catch (DAOException e) {
			e.printStackTrace();
		}
		
		return listaItens;
	}

	public void savar() {
		try {
			listaDAO.save(lista);
		} catch (DAOException e) {
			e.printStackTrace();
		}
		
		lista = new Lista();
	}
	
	public void editar() {
		Integer id = Integer.parseInt((String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"));
		try {
			lista = listaDAO.getById(id);
			this.listaItensSele = lista.getSelecItens();
		} catch (DAOException e) {
			e.printStackTrace();
		}
	}
	
	public void deletar(){
		Integer id = Integer.parseInt((String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"));
		try {
			listaDAO.delete(id);
		} catch (DAOException e) {
			e.printStackTrace();
		}
	}
}
